在第十六天,你已經對程式碼架構有了初步的認識,知道 MVC
如何將程式碼分成 Model
、View
、Controller
三個部分,讓程式變得更有條理。
但 MVC
在 Android 上有一個問題:因為 Controller
和 View
(畫面) 常常都混在同一個 Activity
檔案裡,導致 Activity
變得非常龐大,難以維護。這就像是房子的「總管」(Controller
)什麼事都自己做,最後累得半死。
為了解決這個問題,更現代的 MVVM 模式誕生了。
MVVM 是 Model-View-ViewModel 的縮寫。它將 App 程式碼分成三個角色:
ViewModel
的變化,然後自動更新自己的畫面。它不再主動去「告訴」誰要做什麼。MVC
一樣,負責處理資料和業務邏輯。ViewModel
是一個介於 View
和 Model
之間的「智慧助理」。View
不再直接和 Model
溝通,而是把所有需求都交給 ViewModel
。ViewModel
會處理 View
的請求,並從 Model
獲取資料。ViewModel
會持有畫面需要的資料,並且能「自動通知」View
,當資料有變動時,View
就會自動更新,不用手動去修改。這就是「資料綁定 (Data Binding)」的概念。MVVM
的核心優勢是資料綁定。ViewModel
裡的資料一變動,View
就會自動更新。這大大減少了手動更新畫面的程式碼。Activity
更精簡:因為所有的業務邏輯和資料處理都移到了 ViewModel
,Activity
就只剩下最基本的「載入畫面」和「將使用者輸入傳給 ViewModel
」的工作。這使得 Activity
變得非常輕薄,更容易維護。ViewModel
有自己獨立的生命週期,它不會因為畫面旋轉或重建而消失。這避免了許多 Activity
重建時可能發生的問題。今天我們學會了:
MVVM
模式的概念,以及 Model
、View
、ViewModel
三個角色的職責。ViewModel
是 MVVM
的核心,它扮演了「智慧助理」的角色,負責管理資料並自動更新畫面。MVVM
相較於 MVC
的優勢:更精簡的 Activity
、自動化的資料更新、更少的錯誤。明天,我們將正式動手,用 MVVM
的架構來實作一個簡單的 App,讓你親身體驗這個現代架構的強大之處!
明天見!